package 字符串系列;

public class ReverseLeftWords {
    //解法一，StringBuilder法
    public String reverseLeftWords(String s, int n) {
        StringBuilder ans = new StringBuilder();
        for(int i=n;i<s.length();i++){
            char c = s.charAt(i);
            ans.append(c);
        }
        for(int i=0;i<n;i++){
            char c = s.charAt(i);
            ans.append(c);
        }
        return new String(ans);
    }
    //两种写法一样
//        public String reverseLeftWords(String s, int n) {
//            StringBuilder res = new StringBuilder();
//            for(int i = n; i < n + s.length(); i++)
//                res.append(s.charAt(i % s.length()));
//            return res.toString();
//        }

//        public String reverseLeftWords(String s, int n) {
//            String res = "";
//            for(int i = n; i < s.length(); i++)
//                res += s.charAt(i);
//            for(int i = 0; i < n; i++)
//                res += s.charAt(i);
//            return res;
//        }


    //解法2 三次旋转
    public String reverseLeftWords1(String s, int n) {
        int len=s.length();
        StringBuilder sb=new StringBuilder(s);
        reverseString(sb,0,n-1);
        reverseString(sb,n,len-1);
        return sb.reverse().toString();
    }
    public void reverseString(StringBuilder sb, int start, int end) {
        while (start < end) {
            char temp = sb.charAt(start);
            sb.setCharAt(start, sb.charAt(end));
            sb.setCharAt(end, temp);
            start++;
            end--;
        }
    }
    //解法三：字符串切片
    class Solution {
        public String reverseLeftWords(String s, int n) {
            return s.substring(n, s.length()) + s.substring(0, n);
        }
    }

}


